package com.blackandwhitesensation.sice.modelo;
// Generated 15-jul-2012 17:58:24 by Zathura powered by Hibernate Tools 3.2.4.GA


import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Membresia generated by Zathura powered by Hibernate-tools(hbm2java)
 */
@Entity
@Table(name="membresia"
    ,schema="public"
)
public class Membresia  implements java.io.Serializable {


     private MembresiaId id;
     private Usuario usuario;
     private TipoMembresia tipoMembresia;
     private Long idContrato;
     private Date fechaInicio;
     private Date fechaFin;
     private Set<IngresoEvento> ingresoEventos = new HashSet<IngresoEvento>(0);

    public Membresia() {
    }

	
    public Membresia(MembresiaId id, Usuario usuario, TipoMembresia tipoMembresia, Date fechaInicio, Date fechaFin) {
        this.id = id;
        this.usuario = usuario;
        this.tipoMembresia = tipoMembresia;
        this.fechaInicio = fechaInicio;
        this.fechaFin = fechaFin;
    }
    public Membresia(MembresiaId id, Usuario usuario, TipoMembresia tipoMembresia, Long idContrato, Date fechaInicio, Date fechaFin, Set<IngresoEvento> ingresoEventos) {
       this.id = id;
       this.usuario = usuario;
       this.tipoMembresia = tipoMembresia;
       this.idContrato = idContrato;
       this.fechaInicio = fechaInicio;
       this.fechaFin = fechaFin;
       this.ingresoEventos = ingresoEventos;
    }
   
     @EmbeddedId

    
    @AttributeOverrides( {
        @AttributeOverride(name="numeroTarjeta", column=@Column(name="numero_tarjeta", nullable=false, precision=131089, scale=0) ), 
        @AttributeOverride(name="alias", column=@Column(name="alias", nullable=false, length=200) ) } )
    public MembresiaId getId() {
        return this.id;
    }
    
    public void setId(MembresiaId id) {
        this.id = id;
    }

@ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="alias", nullable=false, insertable=false, updatable=false)
    public Usuario getUsuario() {
        return this.usuario;
    }
    
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

@ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="id_tipo_membresia", nullable=false)
    public TipoMembresia getTipoMembresia() {
        return this.tipoMembresia;
    }
    
    public void setTipoMembresia(TipoMembresia tipoMembresia) {
        this.tipoMembresia = tipoMembresia;
    }

    
    @Column(name="id_contrato", precision=131089, scale=0)
    public Long getIdContrato() {
        return this.idContrato;
    }
    
    public void setIdContrato(Long idContrato) {
        this.idContrato = idContrato;
    }

    
    @Column(name="fecha_inicio", nullable=false, length=13)
    public Date getFechaInicio() {
        return this.fechaInicio;
    }
    
    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    
    @Column(name="fecha_fin", nullable=false, length=13)
    public Date getFechaFin() {
        return this.fechaFin;
    }
    
    public void setFechaFin(Date fechaFin) {
        this.fechaFin = fechaFin;
    }

@OneToMany(fetch=FetchType.LAZY, mappedBy="membresia")
    public Set<IngresoEvento> getIngresoEventos() {
        return this.ingresoEventos;
    }
    
    public void setIngresoEventos(Set<IngresoEvento> ingresoEventos) {
        this.ingresoEventos = ingresoEventos;
    }




}


